Flash Memory Devices
Non-volatile memory is a type of memory that can retain its stored data without a power source. There are several types of non-volatile memories, with different read, write and erase capabilities, access times, data retention, data endurance cycles, etc. Electrically Erasable Programmable Read Only Memory (EEPROM) is capable of performing read write operations on a per-byte level, which means that each of the memory locations can be individually read and written.
Flash memory, comprised of flash-type floating-gate transistors, or cells, is a non-volatile memory similar in functionality and performance to EEPROM memory; flash memory has the advantage of being relatively inexpensive, although it operates under certain limitations. It is not possible to rewrite to a previously written location on flash memory without first erasing an entire memory section, i.e., the flash cells must be erased (e.g. programmed to “one”) before they can be programmed again. Flash memory can only erase relatively large groups of cells, usually called erase blocks (for example, 16 KB to 2 MB in size for many current commercial devices—it is anticipated that the size of erase blocks will increase in the future, as devices with higher capacity become commercially available).
Testing of Flash Memory Devices
Flash memory dies require extensive testing before being put to use in a product. This is especially true for NAND flash. One reason for this is that the flash device might have bad blocks that should not be used. A block is the smallest chunk of cells that can be erased in a single erase operation, and it typically contains many pages, where a page is the smallest chunk of cells that can be written in a single write operation. If a block cannot be reliably erased to the all “1” state or if one or more pages of the block cannot be reliably programmed, then the block should be either replaced by another block by physically trimming the die or be marked as a bad block so that software writing to the device will be able to avoid using it.
A given flash memory die may be subjected to other tests, but the testing for bad blocks is typically the most time consuming. This is because testing for bad blocks typically involves writing to each and every page and erasing each and every block of the device. The writing and erasing is typically repeated more than once in order to make the bad blocks testing under different patterns of written data, under different temperatures, or under other variations of testing parameters.
There is an ongoing need for methods which facilitate testing of flash memory devices in a cost effective manner.
Systems Including a Flash Memory Device Coupled to a Host Device
One type of flash memory device is a “peripheral flash storage device” which is now discussed with reference to FIG. 1.
“Peripheral flash storage devices” 260 are well-known in the art of computing, in form factors such as USB flash drives (UFD); PC-cards; and small storage cards used with digital cameras, music players, handheld and palmtop computers, cellular telephones or any other form factor.
When coupled to a host device 310 (for example, a laptop or desktop computer or a mobile telephone), the peripheral flash storage devices 260 may receive user data via respective host side 350 and device side 250 interfaces (for example, a USB interface or an SD interface or an MMC interface or any other kind of interface). The received data may be written by flash controller 280 to flash memory 270 of the flash memory storage device.
A Discussion of a Prior Art Routine for Testing and Using Flash Memory Devices
FIG. 2 is a flow chart of a prior art routine for testing and using flash memory devices. In FIG. 2, steps S105-S115 are carried out in a manufacturing facility, and step S127 is carried out in the “field” when the device has already left the manufacturing facility and is ‘in-use’ for example, by an ‘end’ user.
In step S105, the flash memory device is assembled. With reference to FIG. 3, it is noted that assembling of step S105 may include inserting a flash controller die 102 and a flash memory die 100 into a housing 112 of the flash memory device and/or fastening the controller die 102 and memory die 100 to the housing 112. In step S105 the flash device 260 is configured so that the flash controller 280 residing on the flash controller die 102 is operative to write data received via device-side interface 250 to flash memory 270 residing on flash memory die 100.
In order to deliver a device of acceptable quality to an end-user, the flash memory residing on flash memory die 100 is subjected to one or more tests, including, bad-block testing. Thus, in step S111, each flash memory device 260 is coupled to a memory tester 106, and in step S115, each coupled flash memory device 260 is subjected to ‘bad-block testing’—for example, a testing procedure whereby known test data patterns of data are written to each flash block, and then read back.
Memory tester 106 can typically test a large number of flash devices 260 simultaneously for example, at least 100 flash devices.
Typically, in order for any flash block to be considered ‘usable’ by an end user, it is necessary to subject the flash block to bad block testing before attempting to write user data to the flash block. Therefore step S115 is carried out such that substantially all flash blocks (in modern flash devices, this is usually at least 1,000 flash blocks) of flash memory 270 are subjected to bad block testing.
In step S123, each flash device 260 is coupled to a respective host device 310. In one use case, each device is individually shrink-wrapped and shipped to distribution points (for example, retail outlets or shipping centers). In this use case, the users can purchase the shrink-wrapped flash devices, open the packing, and couple the device to a host device ‘in the field.’
In another use case, the flash device may be deployed within a housing of a host device—for example, within a laptop computer housing, a cell phone housing or any other housing.
In step S127, the flash device 260 (i.e. which has been previously subjected to bad-block testing) receives user data from the host for storage in flash memory 270.
One important feature of the prior art is that after the user data has been received from the host no bad block testing of flash memory 270 is carried out.